package com.itheima.edu.info.manger.controller;

import com.itheima.edu.info.manger.domain.Student;
import com.itheima.edu.info.manger.service.StudentService;

import java.util.Scanner;

public class BaseStudentController {
    private StudentService studentService=new StudentService();
    private Scanner sc=new Scanner(System.in);

    /**
     * 学生管理业务开启方法
     */

    public void start(){
        //开启死循环->当选择退出的时候，退出死循环，start()方法执行完毕，开始下一次主菜单
        loop:
        while(true){
            System.out.println("--------欢迎使用<学生>管理系统Version1.0--------");
            System.out.println("1.添加学生 2.删除学生 3.修改学生 4.查看学生 5.退出");
            System.out.println("请输入你的选择:");
            int choose=sc.nextInt();
            switch(choose){
                case 1:
                    addStudent();
                    break ;
                case 2:
                    deleteStudent();
                    break ;
                case 3:
                    updateStudent();
                    break ;
                case 4:
                    showStudent();
                    break ;
                case 5:
                    System.out.println("欢迎你的下次使用，即将返回主菜单.");
                    break loop;
                default:
                    System.out.println("你输入的选项有误，请重新输入");
            }
        }
    }

    /**
     * 更新学生信息的方法
     */
    private void updateStudent(){
        String id;
        while(true){
            //1.提示用户输入要修改的学生的学号.
            System.out.println("请输入你要修改的学生的学号:");
            id=sc.next();
            //2.要调用StudnetService的isExists方法进行判断，查询学号是否存在。
            boolean result=studentService.isExists(id);//result -> true:学号存在 false:学号不存在
            if(result){
                break;
            }else{
                System.out.println("你要修改的学生的学号不存在,请重新输入.");
            }
        }
        //当while循环结束的时候，证明id在学号中存在，让用户输入修改后的学生姓名/年龄/出生日期,封装为一个Student.
        System.out.println("请你输入修改后的学生姓名:");
        String name=sc.next();
        System.out.println("请你输入修改后的学生年龄:");
        String age=sc.next();
        System.out.println("请你输入修改后的学生出生日期:");
        String birthday=sc.next();
        Student student=new Student();
        student.setId(id);
        student.setName(name);
        student.setAge(age);
        student.setBirthday(birthday);
        boolean result=studentService.updateStudent(student);
        if(result){
            System.out.println("更新学号为:"+id+"的学生信息成功.");
            System.out.println("更新后的学生姓名为:"+student.getName()+",学生年龄为:"+student.getAge()+"学生出生日期为:"+student.getBirthday());
        }else{
            System.out.println("更新失败.");
        }
    }

    /**
     * 删除学生信息的方法
     */
    private void deleteStudent(){
        String id;
        while(true){
            //1.提示用户输入要删除的学生学号.
            System.out.println("请输入你要删除的学生的学号:");
            id=sc.next();
            //2.要调用StudnetService的isExists方法进行判断，查询学号是否存在.
            boolean result=studentService.isExists(id);//result -> true:学号存在 false:学号不存在
            if(result){
                break;
            }else{
                System.out.println("你要删除的学生的学号不存在，请重新输入");
            }
        }
        //当while循环结束的时候，证明id在学号中存在.
        boolean result=studentService.deleteStudent(id);
        if(result){
            System.out.println("删除学号为:"+id+"的学生信息成功");
        }else{
            System.out.println("删除失败.");
        }
    }

    /**
     * 打印所有学生信息的方法
     */
    private void showStudent(){
        //1.调用studentService对象的方法来获取到学生数组,遍历数组,打印每一个学生的信息.
        Student[] students=studentService.findAll();
        //判断返回的students是不是null值.
        if(students==null){
            System.out.println("系统中暂时没有学生数据,请添加学生后再查看");
        }else{
            System.out.println("学号\t姓名\t年龄\t出生日期");
            for (int i = 0; i < students.length; i++) {
                Student student=students[i];
                if(student !=null){
                    System.out.println(student.getId()+"\t\t"+student.getName()+"\t"+student.getAge()+"\t"+student.getBirthday());
                }
            }
        }
    }

    /**
     * 添加学生信息的方法
     */

    private void addStudent() {
        String id;
        while (true) {
            System.out.println("请输入学生的学号:");
            id = sc.next();
            boolean result = studentService.isExists(id);
            if (result) {
                System.out.println("你输入的学号已存在，请重新输入.");
            } else {
                break;
            }
        }
        System.out.println("请输入学生的姓名:");
        String name = sc.next();
        System.out.println("请输入学生的年龄:");
        String age = sc.next();
        System.out.println("请输入学生的出生日期:");
        String birthday = sc.next();
        Student student = new Student();
        student.setId(id);
        student.setName(name);
        student.setAge(age);
        student.setBirthday(birthday);
        boolean result = studentService.addStudent(student);
        if (result) {
            System.out.println("学生信息添加成功!");
        } else {
            System.out.println("学生信息添加失败!");
        }
    }
    public Student inputStudentInfo(String id){

        return null;

    }
    public void inputStudentId() {
        String id;
        while (true) {
            //1.提示用户输入要删除的学生的学号
            System.out.println("请输入你要操作的学生的学号");
            id = sc.next();
            //2.调用StudentService的isExists方法进行判断，查询学号是否存在
            boolean result = studentService.isExists(id);
            if (result) {
                break;
            } else {
                System.out.println("你要操作的学生的学号不存在,请重新输入.");
            }
        }
    }
}

